home *** CD-ROM | disk | FTP | other *** search
- /*
- MacTech Programmers Challenge - December 94
-
- SolveRubiksCube
- Copyright (c) 1994 J Robert Boonstra
- */
- #include "rubik.h"
-
- /* mapping of MikeCube faces to RubiksCube faces */
- char rubikFaceOrder[] = {F,L,R,B,U,D};
- char mikeToRubik[] = {U,L,F,R,D,B};
- char rubikToMike[] =
- {kFront,kLeft,kRight,kBack,kTop,kBottom};
- char mikeColorToRubik[6];
- char rubikColorToMike[6];
-
- void MikeCubeToRubiksCube(MikeCube *mikePtr,
- RubiksCube *rubikPtr)
- {
- short f,r,c;
- theMoveP = rubikPtr->theMove;
- firstTime = 1;
- for (f=0; f<6; ++f) {
- for (r=0; r<3; ++r) {
- for (c=0; c<3; ++c) {
- /* delete s,d if numbering is corrected */
- short s=r,d=c;
- rubikPtr->cubie[3*s+d][mikeToRubik[f]] =
- mikeToRubik[ mikePtr->face[f].littleSquare[r][c]];
- }
- }
- }
- for (f=0; f<6; ++f) {
- char theColor;
- theColor = rubikFaceOrder[rubikPtr->cubie[4][f] ];
- rubikColorToMike[f] = theColor;
- mikeColorToRubik[theColor] = f;
- }
- for (f=0; f<6; ++f)
- for (r=0; r<3; ++r)
- for (c=0; c<3; ++c) {
- char *p = &rubikPtr->cubie [3*r+c][f];
- *p = mikeColorToRubik[*p];
- }
- for (f=0; f<6; ++f)
- for (r=0; r<3; ++r)
- for (c=0; c<3; ++c)
- rubikPtr->origCube[3*r+c][f] =
- rubikPtr->cubie[3*r+c][f];
- //PrintCube(rubikPtr,&oldRub,' ');
- }
-
- void RubiksCubeToMikeCube(RubiksCube *rubikPtr,
- MikeCube *mikePtr)
- {
- short f,r,c;
- for (f=0; f<6; ++f) {
- for (r=0; r<3; ++r) {
- for (c=0; c<3; ++c) {
- short s=r,d=c;
-
- mikePtr->face[f].littleSquare[r][c] =
- rubikToMike[ rubikColorToMike[
- rubikPtr->cubie[3*s+d][mikeToRubik[f]] ] ];
- }
- }
- }
- }
-